package modelo;

import java.sql.Date;
import java.util.ArrayList;
import java.util.Collection;

public class Informe
{

	private Diagnostico diagnostico;
	private Date fecha;
	private FormularioSolicitudEstudio formulario;
	private Medico medico;
	private Collection<Observacion> observaciones;
	private int nro;
	private String tecnica;

	public Informe()
	{
		this.observaciones = new ArrayList<Observacion>();
	}

	public InformeView CrearView()
	{
		return new InformeView();
	}

	public Diagnostico getDiagnostico()
	{
		return diagnostico;
	}

	public Date getFecha()
	{
		return fecha;
	}

	public FormularioSolicitudEstudio getFormulario()
	{
		return formulario;
	}

	public Medico getMedico()
	{
		return medico;
	}

	public boolean tieneObservacionesSimilares(Collection<Observacion> obs)
	{
		for(Observacion o1 : obs)
		{
			for(Observacion o2 : observaciones)
			{
				if(o1.equals(o2))
					return true;
			}
		}
		return false;
	}

	public void setDiagnostico(Diagnostico newVal)
	{
		diagnostico = newVal;
	}

	public void setFecha(Date fecha)
	{
		this.fecha = fecha;
	}

	public void setFormulario(FormularioSolicitudEstudio newVal)
	{
		formulario = newVal;
	}

	public void setMedico(Medico newVal)
	{
		medico = newVal;
	}

	public void setTecnica(String tecnica)
	{
		this.tecnica = tecnica;
	}

	public String getTecnica()
	{
		return tecnica;
	}

	public void setNro(int nro)
	{
		this.nro = nro;
	}

	public int getNro()
	{
		return nro;
	}

	public void setObservaciones(Collection<Observacion> observacion)
	{
		this.observaciones = observacion;
	}

	public Collection<Observacion> getObservaciones()
	{
		return observaciones;
	}

	public void addSintomas(Collection<Observacion> obs)
	{
		this.observaciones.addAll(obs);
	}

	public void addObservacion(Observacion o)
	{
		observaciones.add(o);		
	}

	public void addObservaciones(Collection<Observacion> obs)
	{
		if(obs != null && !obs.isEmpty())
		{
			this.observaciones.addAll(obs);
		}
	}

	@Override
	public boolean equals(Object obj)
	{
		Informe other = (Informe) obj;
		if(!this.diagnostico.equals(other.getDiagnostico()))
			return false;
		if(!this.getFecha().equals(other.getFecha()))
			return false;
		if(!this.formulario.equals(other.getFormulario()))
			return false;
		if(!this.medico.equals(other.getMedico()))
			return false;
		if(!this.observaciones.equals(other.getObservaciones()))
			return false;
		if(this.nro != other.getNro())
			return false;
		if(this.tecnica != other.getTecnica())
			return false;
		return true;
	}
}